<?php 
class Personnel_model extends CI_Model{
    protected $_table = 'tblpersonnels';
    public function __construct() {
        parent::__construct();
        $this->load->database();
    }

    public function listall($offset,$start){
         $this->db->limit($offset,$start);
         $this->db->order_by("id","desc");
         return $this->db->get($this->_table)->result_array();
    }
     public function count_all(){
         return $this->db->count_all($this->_table);
    }
    public function get($id){
        $this->db->select();
        $this->db->from('tblpersonnels');
        $this->db->where('id',$id);
        return $this->db->get()->result_array();
    }
    public function search($text,$type){
        $this->db->select();
        $this->db->from('tblpersonnels');
        switch ($type) {
            case '0':
                $this->db->like('name',$text);
                $this->db->or_like('birthday', $text);
                $this->db->or_like('address', $text);
                $this->db->or_like('salary', $text); 
                $this->db->or_like('otsalary', $text); 
                break;
            case '1';
                 $this->db->like('name',$text);
                 break;
             case '2';
                 $this->db->like('birthday',$text);
                 break;
             case '3';
                 $this->db->like('address',$text);
                 break;
             case '4';
                 $this->db->like('salary',$text);
                 break;
             case '4';
                 $this->db->like('otsalary',$text);
                 break;
            default:
                $this->db->like('name',$text);
                break;
        }
        return $this->db->get()->result_array();
        
    }
    function delete($id){
        $this->db->delete('tblpersonnels',array('id'=>$id));
    }
    function checkemail($_e){
        $this->db->select('id');
        $this->db->from('tblpersonnels');
        $this->db->where('email',trim($_e));
        $arr = $this->db->get()->result_array();
        if(count($arr)>0)  return false;
        else return true;
    }
    function checkemail_update($id,$_e){
        $sql = "SELECT `email` FROM `tblpersonnels` WHERE `email`='$_e' and `email` not in (SELECT `email` FROM `tblpersonnels` WHERE `id`='$id')";
        $arr = $this->db->query($sql)->result_array();
        if(count($arr)>0)  return false;
        else return true;
    }
    function get_for_assign_free($pj_id,$managerid){ // Ham lay danh sach nhan vien ranh voi 1 du an va chua dc phan bo voi 1 phan cong
        $sql = "SELECT `id`,`name` FROM `tblpersonnels`
                WHERE `id` NOT IN
                    (  SELECT `personnelid` FROM `tblmanager` 
                       JOIN `tblprojects` ON `projectid`=tblprojects.id 
                       WHERE (tblprojects.begindate < (SELECT enddate FROM tblprojects WHERE `id`='$pj_id')
                            AND tblprojects.iscomplete='0')
                       UNION SELECT `personnelid` FROM `tblmanager` WHERE parent='$managerid'
                    )      
               ";
        $query = $this->db->query($sql);
        if($query->num_rows>0){
            return $query->result_array();
        }else {
            return null;
        }
    }
    // Ham lay ve danh sach nhan vien de phan cong(chua phan cong voi managerid) 
    // Nhung da phan cong voi manager khac
    function get_for_assign_but_busy($pj_id,$managerid){
        //Lấy danh sách nhân viên đang làm dự án trùng thời gian với dự án hiện tại
        $sql = "SELECT `personnelid`,tblpersonnels.name as 'personnelname',`roleid`,tblroles.name as 'rolename',tblprojects.id as 'projectid',tblprojects.name as 'projectname',tblprojects.begindate,tblprojects.enddate FROM `tblmanager` 
                JOIN `tblroles` ON tblmanager.roleid = tblroles.id 
                JOIN `tblprojects` ON `projectid`=tblprojects.id 
                JOIN `tblpersonnels` ON `personnelid`=tblpersonnels.id
                WHERE tblprojects.begindate < (SELECT enddate FROM tblprojects WHERE `id`='$pj_id')
                AND tblprojects.iscomplete='0'
                AND `personnelid` NOT IN
                            (
                                SELECT `personnelid` FROM tblmanager WHERE parent = '$managerid'
                            )
                ";
        $query = $this->db->query($sql);
        if($query->num_rows>0){
            $arr = $query->result_array();
            for($i = 0;$i<count($arr);$i++){
                $_psn = $arr[$i]['personnelid'];
                $_pjid = $arr[$i]['projectid'];
                //Lấy các công việc  của các dự án trùng thời gian với dự án hiện tại rồi gán vào ds nhân viên tương ứng trên
                $sql2 = "SELECT tblworks.id,tblworks.name as 'workname',`beginonreality`,`timevalueonreality`,`timeunitid`,tblprojects.name as 'projectname' FROM  `tblworks` 
                 JOIN  `tblmanager`  ON tblworks.id=tblmanager.workid 
                 JOIN `tblprojects` ON tblworks.projectid= tblprojects.id
                 WHERE personnelid= '$_psn' AND 
                 tblprojects.id='$_pjid'
                  " ;
                $query2 = $this->db->query($sql2);
                if($query2->num_rows>0){
                    $arr2 = $query2->result_array();
                    $x = count($arr2) -1;
                    $workname = $arr2[$x]['workname'];
                    $begin = $arr2[$x]['beginonreality'];
                    $date = new DateTime($arr2[$x]['beginonreality']);
                    $timeunit = $arr2[$x]['timeunitid'];
                    $time = $arr2[$x]['timevalueonreality'];
                    $projectname = $arr2[$x]['projectname'];
                    switch ($timeunit) {
                        case '1':
                            $date->modify("+$time hours");
                            break;
                        case '2':
                            $date->modify("+$time days");
                            break;
                        case '3':
                            $date->modify("+$time weeks");
                            break;
                        case '4':
                            $date->modify("+$time months");
                            break;
                        default:
                            break;
                    }
                    $arr[$i]['des'] = "Đang phụ trách công việc $workname thuộc dự án $projectname từ ".datephp($begin)." đến ".$date->format('d-m-Y');
                }else {
                    $arr[$i]['des'] = 'Đang tham gia dự án '.$arr[$i]['projectname'].' từ '.datephp($arr[$i]['begindate']).' đến '.datephp($arr[$i]['enddate']); 
                }
            }
            // Nhóm công việc cùng 1 người
            if(count($arr)>1){
                for($i=0;$i<count($arr);$i++){
                    for($j=$i+1;$j<count($arr);$j++){
                        if($arr[$j]['personnelid']!='0'&&$arr[$i]['personnelid']==$arr[$j]['personnelid']){
                            $arr[$i]['des'].= '<br/>'.$arr[$j]['des'];
                            $arr[$j]['personnelid'] = '0';
                        }
                     }
                }
                foreach ($arr as $k => $v) {
                    if($v['personnelid']=='0')
                        unset($arr[$k]);
                }
            }
            return $arr;
        }else {
            return null;
        }
    }
    /* Hàm này để trả về một mảng nhân viên, mục đích là phân công cho một dự án nhưng nhân viên đang bận
     * Nếu nhân viên đang thực hiện một dự án khác mà trùng thời gian :
     *              + chưa được phân công công việc -> kèm theo thời gian thực hiện của dự án
     *              + đã được phân công -> kèm theo thời gian của công việc
     */
    function get_for_assign_busy($pj_id){
        //Lấy danh sách nhân viên đang làm dự án trùng thời gian với dự án hiện tại
        $sql = "SELECT `personnelid`,tblpersonnels.name as 'personnelname',`roleid`,tblroles.name as 'rolename',tblprojects.id as 'projectid',tblprojects.name as 'projectname',tblprojects.begindate,tblprojects.enddate FROM `tblmanager` 
                JOIN `tblroles` ON tblmanager.roleid = tblroles.id 
                JOIN `tblprojects` ON `projectid`=tblprojects.id 
                JOIN `tblpersonnels` ON `personnelid`=tblpersonnels.id
                WHERE tblprojects.begindate < (SELECT enddate FROM tblprojects WHERE `id`='$pj_id')
                AND tblprojects.iscomplete='0'
                ";
        $query = $this->db->query($sql);
        if($query->num_rows>0){
            $arr = $query->result_array();
            for($i = 0;$i<count($arr);$i++){
                $_psn = $arr[$i]['personnelid'];
                $_pjid = $arr[$i]['projectid'];
                //Lấy các công việc  của các dự án trùng thời gian với dự án hiện tại rồi gán vào ds nhân viên tương ứng trên
                $sql2 = "SELECT tblworks.id,tblworks.name as 'workname',`beginonreality`,`timevalueonreality`,`timeunitid`,tblprojects.name as 'projectname' FROM  `tblworks` 
                 JOIN  `tblmanager`  ON tblworks.id=tblmanager.workid 
                 JOIN `tblprojects` ON tblworks.projectid= tblprojects.id
                 WHERE personnelid= '$_psn' AND 
                 tblprojects.id='$_pjid'
                  " ;
                $query2 = $this->db->query($sql2);
                if($query2->num_rows>0){
                    $arr2 = $query2->result_array();
                    $x = count($arr2) -1;
                    $workname = $arr2[$x]['workname'];
                    $begin = $arr2[$x]['beginonreality'];
                    $date = new DateTime($arr2[$x]['beginonreality']);
                    $timeunit = $arr2[$x]['timeunitid'];
                    $time = $arr2[$x]['timevalueonreality'];
                    $projectname = $arr2[$x]['projectname'];
                    switch ($timeunit) {
                        case '1':
                            $date->modify("+$time hours");
                            break;
                        case '2':
                            $date->modify("+$time days");
                            break;
                        case '3':
                            $date->modify("+$time weeks");
                            break;
                        case '4':
                            $date->modify("+$time months");
                            break;
                        default:
                            break;
                    }
                    $arr[$i]['des'] = "Đang phụ trách công việc $workname thuộc dự án $projectname từ ".datephp($begin)." đến ".$date->format('d-m-Y');
                }else {
                    $arr[$i]['des'] = 'Đang tham gia dự án '.$arr[$i]['projectname'].' từ '.datephp($arr[$i]['begindate']).' đến '.datephp($arr[$i]['enddate']); 
                }
            }
            // Nhóm công việc cùng 1 người
            if(count($arr)>1){
                for($i=0;$i<count($arr);$i++){
                    for($j=$i+1;$j<count($arr);$j++){
                        if($arr[$j]['personnelid']!='0'&&$arr[$i]['personnelid']==$arr[$j]['personnelid']){
                            $arr[$i]['des'].= '<br/>'.$arr[$j]['des'];
                            $arr[$j]['personnelid'] = '0';
                        }
                     }
                }
                foreach ($arr as $k => $v) {
                    if($v['personnelid']=='0')
                        unset($arr[$k]);
                }
            }
            return $arr;
        }else {
            return null;
        }
    }
    
    function get_personnels_for_assign_of_boss($pj_id,$pn_id){
        $sql = "SELECT tblmanager.personnelid as 'id', tblpersonnels.name 
                FROM tblmanager
                JOIN tblpersonnels ON tblpersonnels.id = tblmanager.personnelid
               ";
    }
    
     function get_free_with_manager($pj_id,$managerid){
        // Lấy danh sách nhân viên đang làm trong phân công managerid nhưng ko làm trong dự án hay cv nào trùng cv hiện tại
        if($managerid!='0'){
            $sql = "SELECT tblmanager.personnelid as 'id',tblpersonnels.name FROM `tblpersonnels`
                            JOIN tblmanager ON tblmanager.personnelid = tblpersonnels.id
                    WHERE  tblmanager.parent = '$managerid' 
                        AND tblmanager.personnelid NOT IN
                            (SELECT `personnelid` FROM `tblmanager` 
                                JOIN `tblprojects` ON `projectid`=tblprojects.id 
                                WHERE tblprojects.begindate < (SELECT enddate FROM tblprojects WHERE `id`='$pj_id')
                                AND tblprojects.iscomplete='0' 
                                AND tblmanager.parent != '$managerid')      
                ";
            $query = $this->db->query($sql);
            if($query->num_rows>0){
                return $query->result_array();
            }else {
                return array();
            }
        }else 
            return array();
    }
    function get_of_manager_busy($pj_id,$managerid){ // 
        //Lấy danh sách nhân viên đang làm trong phân công managerid và cũng đang làm dự án trùng thời gian với dự án hiện tại 
        $sql = "SELECT `personnelid`,tblpersonnels.name as 'personnelname',`roleid`,tblroles.name as 'rolename',tblprojects.id as 'projectid',tblprojects.name as 'projectname',tblprojects.begindate,tblprojects.enddate,tblmanager.id as 'managerid' FROM `tblmanager` 
                JOIN `tblroles` ON tblmanager.roleid = tblroles.id 
                JOIN `tblprojects` ON `projectid`=tblprojects.id 
                JOIN `tblpersonnels` ON `personnelid`=tblpersonnels.id
                WHERE tblprojects.begindate < (SELECT enddate FROM tblprojects WHERE `id`='$pj_id') 
                AND tblprojects.iscomplete='0'
                AND  tblmanager.parent = '$managerid'
                ";
        $query = $this->db->query($sql);
        if($query->num_rows>0){
            $total = array();
            $arr = $query->result_array();
            for($i = 0;$i<count($arr);$i++){
                $_pn = $arr[$i]['personnelid'];
                $_pj = $arr[$i]['projectid'];
                $_pn_name = $arr[$i]['personnelname'];
                //Lấy các công việc  của các dự án trùng thời gian với dự án hiện tại rồi gán vào ds nhân viên tương ứng trên
                $sql2 = "SELECT tblmanager.workid as 'id', tblworks.name as 'workname',tblworks.beginonreality,tblworks.timevalueonreality,tblworks.timeunitid,tblprojects.name as 'projectname',
                            tblprojects.begindate,tblprojects.enddate
                         FROM tblmanager
                         LEFT OUTER JOIN tblworks ON tblmanager.workid = tblworks.id
                         LEFT OUTER JOIN tblprojects ON tblprojects.id = tblmanager.projectid
                         WHERE tblmanager.personnelid = '$_pn' AND tblmanager.projectid='$_pj'
                         AND tblmanager.parent != '$managerid'
                        ";
                $query2 = $this->db->query($sql2);
                if($query2->num_rows>0){
                    $arr2 = $query2->result_array();
                    foreach ($arr2 as $a) {
                        $timeunit = $a['timeunitid'];
                        $time = $a['timevalueonreality'];
                        $date = new DateTime($a['beginonreality']);
                        switch ($timeunit) {
                            case '1':
                                $date->modify("+$time hours");
                                break;
                            case '2':
                                $date->modify("+$time days");
                                break;
                            case '3':
                                $date->modify("+$time weeks");
                                break;
                            case '4':
                                $date->modify("+$time months");
                                break;
                            default:
                                break;
                        }
                        if($a['id']!='0'){// Neu da duoc phan cong cap duoi tac la co congviec
                            $total[]= array(
                            'personnelid'=>$_pn,
                            'personnelname'=>$_pn_name,
                            'des' => "Đang phụ trách công việc ".$a['workname']." thuộc dự án ".$a['projectname']." từ ".datephp($a['beginonreality'])." đến ".$date->format('d-m-Y')
                            );
                        }else {
                            $total[]= array(
                            'personnelid'=>$_pn,
                            'personnelname'=>$_pn_name,
                            'des' => 'Đang tham gia dự án '.$a['projectname'].' từ '.datephp($a['begindate']).' đến '.datephp($a['enddate'])
                            );
                        }
                      }
                    
                }
            }
            // Nhóm công việc cùng 1 người
            if(count($total)>1){
                for($i=0;$i<count($total);$i++){
                    for($j=$i+1;$j<count($total);$j++){
                        if($total[$j]['personnelid']!='0'&&$total[$i]['personnelid']==$total[$j]['personnelid']){
                            $total[$i]['des'].= '<br/>'.$total[$j]['des'];
                            $total[$j]['personnelid'] = '0';
                        }
                     }
                }
                foreach ($total as $k => $v) {
                    if($v['personnelid']=='0')
                        unset($total[$k]);
                }
            }
            return $total;
        }else {
            return null;
        }
    }
    
    function get_personnels_of_project($pj_id){ // Lay danh sach nhan vien dang lam viec tai du an
        $sql = "SELECT `personnelid`,tblpersonnels.name 
               FROM tblmanager 
               JOIN `tblpersonnels` ON personnelid=tblpersonnels.id 
               WHERE `projectid`=$pj_id";
        $query = $this->db->query($sql);
        if($query->num_rows>0) return $query->result_array();
        else return null;
    }
    function get_boss_of_project($pj_id){ // Lay danh sach truong nhom dang lam viec tai du an
        $sql = "SELECT `personnelid`,tblpersonnels.name 
               FROM tblmanager 
               JOIN `tblpersonnels` ON personnelid=tblpersonnels.id 
               WHERE `projectid`=$pj_id AND roleid='2' AND `status`!=2";
        $query = $this->db->query($sql);
        if($query->num_rows>0) return $query->result_array();
        else return null;
    }
    function get_personnels_of_manager($managerid){
        $this->db->select('personnelid,tblpersonnels.name');
        $this->db->from('tblmanager');
        $this->db->join('tblpersonnels', 'personnelid = tblpersonnels.id');
        $this->db->where('tblmanager.id',$managerid);
        $this->db->where('parent !=','0');
        //print_r ($this->db->get()->result_array());
        return $this->db->get()->result_array();
    }
    function get_personnels_free_manager($managerid){ // Lay danh sach nhan vien ranh voi nhom truong va du an
        $sql = "SELECT tblpersonnels.id,tblpersonnels.name 
                FROM tblpersonnels 
                WHERE tblpersonnels.id NOT IN ( SELECT personnelid FROM tblmanager WHERE (id = '$managerid' OR parent='$managerid')
                                                ) 
                ";
        return $this->db->query($sql)->result_array();
    }
    // Ham dang nhap, tre ve mang chua id,ten,quyen neu  thanh cong,null neu that bai
    function login($username,$password){
        $password = md5($password);
        $query = $this->db->query("SELECT  `id`,`name`,`rule` FROM tblpersonnels WHERE
                                    `username`='$username' AND `password`='$password' ");
        if($query->num_rows>0){
            $arr = $query->result_array();
            return $arr[0];
        }else return null;
    }
    function get_role($pn_id,$pj_id){// lay quyen cao nhat
        $sql = "SELECT roleid FROM tblmanager WHERE personnelid='$pn_id' AND projectid='$pj_id' ORDER BY roleid ";  
        $arr = $this->db->query($sql)->result_array();
        if(count($arr)>0){
            return $arr['0']['roleid'];
        }else {
            return null;
        }
    }
    function get_name($pn_id){
        $sql = "SELECT name FROM tblpersonnels WHERE id='$pn_id'";  
        $arr = $this->db->query($sql)->result_array();
        if(count($arr)>0){
            return $arr['0']['name'];
        }else {
            return null;
        }
    }
    function get_onwer_pns(){
        $pn_id = auth_id();
        $sql = "SELECT `personnelid`,tblpersonnels.name as 'personnelname',`roleid`,tblroles.name as 'rolename',tblprojects.id as 'projectid',tblprojects.name as 'projectname',tblprojects.begindate,tblprojects.enddate,tblmanager.id as 'managerid' FROM `tblmanager` 
                JOIN `tblroles` ON tblmanager.roleid = tblroles.id 
                JOIN `tblprojects` ON `projectid`=tblprojects.id 
                JOIN `tblpersonnels` ON `personnelid`=tblpersonnels.id
                WHERE  tblmanager.parent = '$pa_maid'
                ";
    }
    function get_personnels_of_parentmanager($pj_id,$managerid){
    	// Hàm này lấy tất cả nhân viên dưới quyền của người dùng hiện tại, load vào mục đã phân và chưa phân cho TN dưới
        $this->load->model('manager_model');
         $pa_maid = $this->manager_model->getParent($managerid); // Lấy phân công cha
         //echo $pa_maid;
        // Lấy tất cả nhân viên dưới quyền của phân công cha trên nhưng trừ nhân viên đang được phân với managerid
        $pn_id = auth_id();// nguoi dung dang dang nhap
        $leader = $this->manager_model->get_personnelid($managerid);// nhan vien ung voi managerid
        $sql = "SELECT `personnelid`,tblpersonnels.name as 'personnelname',`roleid`,tblroles.name as 'rolename',tblprojects.id as 'projectid',tblprojects.name as 'projectname',tblprojects.begindate,tblprojects.enddate,tblmanager.id as 'managerid',tblmanager.workid FROM `tblmanager` 
                JOIN `tblroles` ON tblmanager.roleid = tblroles.id 
                JOIN `tblprojects` ON `projectid`=tblprojects.id 
                JOIN `tblpersonnels` ON `personnelid`=tblpersonnels.id
                WHERE  tblmanager.parent = '$pa_maid' AND `personnelid`!='$leader'
                ";
        $arr = $this->db->query($sql)->result_array();
        //print_r($arr);
        //loai tru manager con hien dang lam
        $ma_without = $this->manager_model->get_manager_without($managerid);
        $str_no = '';//chua dc phan cong
        $str_yes = '';//da
        // Kiem tra da phan cong hay chua
		$arr_st = $this->db->query("SELECT `status` FROM tblmanager WHERE id='$managerid'")->result_array();
		if($arr_st[0]['status']!=0){
			// Luc nay la da co phan cong, gan vao str_yes
			$arr_yes = $this->db->query("
				SELECT tblmanager.personnelid as 'id',tblpersonnels.name
				FROM tblmanager
				JOIN tblpersonnels ON tblpersonnels.id = tblmanager.personnelid
				WHERE tblmanager.parent = '$managerid'
			")->result_array();
			foreach ($arr_yes as $k => $a) {
				$arr_yes[$k]['des'] = $this->personnel_model->get_work_busy_string($pj_id,$a['id'],null,$ma_without);
				$str_yes .= "<option value=".$a['id']." title='".$arr_yes[$k]['des']."'>".$a['name']."</option>";
			}
			//------------- gan chua phan cong vao str_no----------------------
			//tao ra copy cua $arr de tru voi $arr_yes la con $arr_no
			$arr_no = $arr;
			// Loai tru trung voi arr_yes
			foreach ($arr_no as $k => $v) {
	            foreach ($arr_yes as $v2) {
	                if($v['personnelid']==$v2['id']){
	                    unset ($arr_no[$k]);
	                    break;
	                }
	            }
        	}
			// gan vao str_no
			foreach ($arr_no as $k => $a) {
				$arr_no[$k]['des'] = $this->personnel_model->get_work_busy_string($pj_id,$a['personnelid'],null,$ma_without);
				$str_no .= "<option value=".$a['personnelid']." title='".$arr_no[$k]['des']."'>".$a['personnelname']."</option>";
			}
		}else {
			foreach ($arr as $k => $a) {
				$arr[$k]['des'] = $this->personnel_model->get_work_busy_string($pj_id,$a['personnelid'],null,$ma_without);
				$str_no .= "<option value=".$a['personnelid']." title='".$arr[$k]['des']."'>".$a['personnelname']."</option>";
			}
		}
		/***
         //danh sach da dc phan cong trong manager nay
        $sql2 = "SELECT `personnelid`,tblpersonnels.name as 'personnelname',`roleid`,tblroles.name as 'rolename',tblprojects.id as 'projectid',tblprojects.name as 'projectname',tblprojects.begindate,tblprojects.enddate,tblmanager.id as 'managerid',tblmanager.workid FROM `tblmanager` 
                  JOIN `tblroles` ON tblmanager.roleid = tblroles.id 
                  JOIN `tblprojects` ON `projectid`=tblprojects.id 
                  JOIN `tblpersonnels` ON `personnelid`=tblpersonnels.id
                  WHERE tblmanager.parent ='$pa_maid'"; 
        //$sql = "SELECT `personnelid` FROM tblmanager "
        $arr2 = $this->db->query($sql2)->result_array();
        foreach ($arr as $k => $v) {
            foreach ($arr2 as $v2) {
                if($v['personnelid']==$v2['personnelid']){
                    unset ($arr[$k]);
                    break;
                }
            }
        }
        //print_r($arr);
        if($arr2!=null)
        foreach ($arr2 as $k => $v) {
            $arr2[$k]['des'] =  $this->personnel_model->get_work_busy_string($pj_id,$v['personnelid'],null,$ma_without);
            if($arr2[$k]['des']!='')
                $str_yes .= "<option value='".$v['personnelid']."' title='".$arr2[$k]['des']."'>".$v['personnelname']." (Đang bận)</option>"; 
            else $str_yes .= "<option value='".$v['personnelid']."'>". $v['personnelname']."</option>"; 
        }
        foreach ($arr as $k => $v) {
            $arr[$k]['des'] =  $this->personnel_model->get_work_busy_string($pj_id,$v['personnelid'],null,$ma_without);
            if($arr[$k]['des']!='')
                $str_no .= "<option value='".$v['personnelid']."' title='".$arr[$k]['des']."'>".$v['personnelname']." (Đang bận)</option>"; 
            else $str_no .= "<option value='".$v['personnelid']."'>". $v['personnelname']."</option>"; 
        }
        //echo "<meta http-equiv='Content-Type' content='text/html;charset=utf-8' />";
        // print_r($arr2);
        // loai tru da phan cong
        return $str_no.'--------------'.$str_yes; ***/
        return $str_no.'--------------'.$str_yes;
    }
    // Sửa lại hàm trên, lấy nhân sự danh sách đã phân công và chwua phân công dưới quyền của nhóm trưởng
    function get_personnels_yes_no_of_boss($pj_id,$managerid){
    	$str_yes = '';$str_no = '';
    	$this->load->model('manager_model');
		// Kiem tra da phan cong hay chua
		$arr = $this->db->query("SELECT `status` FROM tblmanager WHERE id='$managerid'")->result_array();
		if($arr[0]['status']!=0){
			// Luc nay la da co phan cong, gan vao str_yes
			$arr_yes = $this->db->query("
				SELECT tblmanager.personnelid as 'id',tblpersonnels.name
				FROM tblmanager
				JOIN tblpersonnels ON tblpersonnels.id = tblmanager.personnelid
				WHERE tblmanager.parent = '$managerid'
			")->result_array();
			$ma_without = $this->manager_model->get_manager_without($managerid);
			echo $ma_without;
			foreach ($arr_yes as $k => $a) {
				$arr_yes[$k]['des'] = $this->personnel_model->get_work_busy_string($pj_id,$a['id'],null,$ma_without);
				$str_yes .= "<option value=".$a['id']." tile='".$arr_yes[$k]['des']."'>".$a['name']."</option>";
			}
		  //utf8();
		  print_r($arr_yes);
		  echo $str_yes;
		}
    }
    function is_busy($pj_id,$pn_id,$work_without=null,$manager_without=null){
        $sql = "SELECT tblmanager.id FROM tblmanager 
                JOIN tblprojects ON tblprojects.id = tblmanager.projectid
                WHERE tblprojects.begindate < (SELECT enddate FROM tblprojects WHERE `id`='$pj_id') 
                AND tblprojects.iscomplete='0'
                AND tblmanager.personnelid='$pn_id'
                ";
        if($work_without!=null){
            $wo = @split('-',$work_without);
            if(count($wo)>0){
                $stra = "";
                foreach ($wo as $w) {
                    $stra .= " AND tblmanager.workid != '$w' ";
                }
                $sql .= $stra;
            }else {
                $sql .= "AND tblmanager.workid !='$work_without'";
            }
        }
        if($manager_without!=null){
            $wo = @split('-',$manager_without);
            if(count($wo)>0){
                $stra = "";
                foreach ($wo as $w) {
                    $stra .= " AND tblmanager.id != '$w' ";
                }
                $sql .= $stra;
            }else {
                $sql .= "AND tblmanager.id !='$manager_without'";
            }
        }
        $query = $this->db->query($sql);
        if($query->num_rows>0){
           // print_r($query->result_array());
            return true;
        }else return false;
    }
    function get_work_busy($pj_id,$pn_id,$work_without=null,$manager_without=null){// lay tat ca cong viec ma nhan vien dang ban voi du an hien tai
        //Lấy các công việc  của các dự án trùng thời gian với dự án hiện tại rồi gán vào ds nhân viên tương ứng trên
        $sql = "SELECT tblmanager.workid as 'id', tblworks.name as 'workname',tblworks.beginonreality,tblworks.timevalueonreality,tblworks.timeunitid,tblprojects.name as 'projectname',
                    tblprojects.begindate,tblprojects.enddate
                    ,tblmanager.roleid
                 FROM tblmanager
                 LEFT OUTER JOIN tblworks ON tblmanager.workid = tblworks.id
                 LEFT OUTER JOIN tblprojects ON tblprojects.id = tblmanager.projectid
                 WHERE tblmanager.personnelid = '$pn_id' AND tblprojects.begindate < (SELECT enddate FROM tblprojects WHERE `id`='$pj_id') 
                ";
        if($work_without!=null){
            $wo = @split('-',$work_without);
            if(count($wo)>0){
                $stra = "";
                foreach ($wo as $w) {
                    $stra .= " AND tblmanager.workid != '$w' ";
                }
                $sql .= $stra;
            }else {
                $sql .= "AND tblmanager.workid !='$work_without'";
            }
        }
        if($manager_without!=null){
            $wo = @split('-',$manager_without);
            if(count($wo)>0){
                $stra = "";
                foreach ($wo as $w) {
                    $stra .= " AND tblmanager.id != '$w' ";
                }
                $sql .= $stra;
            }else {
                $sql .= "AND tblmanager.id !='$manager_without'";
            }
        }
        $query = $this->db->query($sql);
        $total = array();
        $pn_name = $this->get_name($pn_id);
        if($query->num_rows>0){
            $arr = $query->result_array();
            foreach ($arr as $a) {
                $timeunit = $a['timeunitid'];
                $time = $a['timevalueonreality'];
                $date = new DateTime($a['beginonreality']);
                switch ($timeunit) {
                    case '1':
                        $date->modify("+$time hours");
                        break;
                    case '2':
                        $date->modify("+$time days");
                        break;
                    case '3':
                        $date->modify("+$time weeks");
                        break;
                    case '4':
                        $date->modify("+$time months");
                        break;
                    default:
                        break;
                }
                if($a['roleid']=='1'){
                   $total[]= array(
                    'personnelid'=>$pn_id,
                    'personnelname'=>$pn_name,
                    'des' => "Trưởng dự án dự án ".$a['projectname']." từ ".datephp($a['beginonreality'])." đến ".$date->format('d-m-Y')
                    ); 
                }else {
                        if($a['id']!='0'){// Neu da duoc phan cong cap duoi tac la co congviec
                        $r = $a['roleid'];
                        if($r=='2') $ro = 'Trưởng nhóm';
                        else $ro = 'Thành viên';
                        $total[]= array(
                        'personnelid'=>$pn_id,
                        'personnelname'=>$pn_name,
                        'des' => "$ro phụ trách công việc ".$a['workname']." thuộc dự án ".$a['projectname']." từ ".datephp($a['beginonreality'])." đến ".$date->format('d-m-Y')
                        );
                    }else {
                        $total[]= array(
                        'personnelid'=>$pn_id,
                        'personnelname'=>$pn_name,
                        'des' => 'Đang tham gia dự án '.$a['projectname'].' từ '.datephp($a['begindate']).' đến '.datephp($a['enddate'])
                        );
                    }
                }
              }   
        }
        return $total;
    }
    function get_work_busy_string($pj_id,$pn_id,$work_without=null,$manager_without=null){//cung nhu ham tren nhung tra ve chuoi xuong dong
                // tham so work_without la loai tru cong viec, thuong la loai tru cv hien tai
                // dinh dang : chuoi 2-32 hoac 2, tuong tu manager_without
        //Lấy các công việc  của các dự án trùng thời gian với dự án hiện tại rồi gán vào ds nhân viên tương ứng trên
        $sql = "SELECT tblmanager.workid as 'id', tblworks.name as 'workname',tblworks.beginonreality,tblworks.timevalueonreality,tblworks.timeunitid,tblprojects.name as 'projectname',
                    tblprojects.begindate,tblprojects.enddate
                    ,tblmanager.roleid
                 FROM tblmanager
                 LEFT OUTER JOIN tblworks ON tblmanager.workid = tblworks.id
                 LEFT OUTER JOIN tblprojects ON tblprojects.id = tblmanager.projectid
                 WHERE tblmanager.personnelid = '$pn_id' 
                 AND tblprojects.begindate < (SELECT enddate FROM tblprojects WHERE `id`='$pj_id') 
                ";
        if($work_without!=null){
            $wo = @split('-',$work_without);
            if(count($wo)>0){
                $stra = "";
                foreach ($wo as $w) {
                    $stra .= " AND tblmanager.workid != '$w' ";
                }
                $sql .= $stra;
            }else {
                $sql .= "AND tblmanager.workid !='$work_without'";
            }
        }
        if($manager_without!=null){
            $wo = @split('-',$manager_without);
            if(count($wo)>0){
                $stra = "";
                foreach ($wo as $w) {
                    $stra .= " AND tblmanager.id != '$w' ";
                }
                $sql .= $stra;
            }else {
                $sql .= "AND tblmanager.id !='$manager_without'";
            }
        }
        $query = $this->db->query($sql);
        $total = array();
        $pn_name = $this->get_name($pn_id);
        if($query->num_rows>0){
            $arr = $query->result_array();
            foreach ($arr as $a) {
                $timeunit = $a['timeunitid'];
                $time = $a['timevalueonreality'];
                $date = new DateTime($a['beginonreality']);
                switch ($timeunit) {
                    case '1':
                        $date->modify("+$time hours");
                        break;
                    case '2':
                        $date->modify("+$time days");
                        break;
                    case '3':
                        $date->modify("+$time weeks");
                        break;
                    case '4':
                        $date->modify("+$time months");
                        break;
                    default:
                        break;
                }
                if($a['roleid']=='1'){
                   $total[]= array(
                    'personnelid'=>$pn_id,
                    'personnelname'=>$pn_name,
                    'des' => "Trưởng dự án dự án ".$a['projectname']." từ ".datephp($a['beginonreality'])." đến ".$date->format('d-m-Y')
                    ); 
                }else {
                        if($a['id']!='0'){// Neu da duoc phan cong cap duoi tac la co congviec
                        $r = $a['roleid'];
                        if($r=='2') $ro = 'Trưởng nhóm';
                        else $ro = 'Thành viên';
                        $total[]= array(
                        'personnelid'=>$pn_id,
                        'personnelname'=>$pn_name,
                        'des' => "$ro phụ trách công việc ".$a['workname']." thuộc dự án ".$a['projectname']." từ ".datephp($a['beginonreality'])." đến ".$date->format('d-m-Y')
                        );
                    }else {
                        $total[]= array(
                        'personnelid'=>$pn_id,
                        'personnelname'=>$pn_name,
                        'des' => 'Đang tham gia dự án '.$a['projectname'].' từ '.datephp($a['begindate']).' đến '.datephp($a['enddate'])
                        );
                    }
                }
              }   
        }
        $str = '';
       // echo arrTotable($total,true);
        foreach ($total as $v) {
            $str .= $v['des'].'1&#013';
        }
        return $str;
    }
}
?>
